package com.zz.node;

/**
 *
 * @author 张哲
 * @email a252013135@163.com
 * @date 2024/9/12 16:09
 *
 * 给定一个已排序的链表的头 head ， 删除所有重复的元素，使每个元素只出现一次 。
 * 返回 已排序的链表 。
 *
 * 输入：head = [1,1,2]
 * 输出：[1,2]
 *
 * 输入：head = [1,1,2,3,3]
 * 输出：[1,2,3]
 *
 * 提示：
 * 链表中节点数目在范围 [0, 300] 内
 * -100 <= Node.val <= 100
 * 题目数据保证链表已经按升序 排列
 */
public class L83Solution {
    /**
     * 快慢指针解法
     * @param head
     * @return
     */
    public ListNode deleteDuplicates(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        ListNode slowNode = head;
        ListNode fastNode = head.next;

        while (fastNode != null){
            if(fastNode.val != slowNode.val){
                slowNode = slowNode.next;
                slowNode.val = fastNode.val;
            }
            fastNode = fastNode.next;
        }
        slowNode.next = null;
        return head;
    }
}
